擔心晚上天氣可能會變糟,兩人選擇外帶飲料。
「剛剛陣列裡放的只有價錢,怎麼分辨飲料的名字?」詩憶啜飲著牛奶可可,延續剛剛的飲料價位篩選問題。
「⋯⋯其實是剛剛的飲料單空白處不多,就省略了用自定義類別的描述。定義飲料的細節。」唯心把飲料放下,轉而走到桌前,打開IDE建立了兩個檔案。
data class 飲料(val name: String, val price: Int)
fun main() {
val 飲料們 = arrayOf(飲料("鮮奶紅茶",50), 飲料("多多奶茶", 60), 飲料("火龍果奶茶", 70), 飲料("奶茶", 30), 飲料("鮮奶綠茶", 50))
for (飲料 in 飲料們) {
// if條件式
if (飲料.price <= 60) {
println(飲料.name)
}
}
}
她飛快的輸入程式碼後,旋即起身,結果和拿著飲料走過來的詩憶遇個正著。
唯心順手收走詩憶手中的飲料,放到自己的飲料旁邊,微笑的解釋說:「飲料不要靠近筆電。」
「啊,忘記了。」詩憶感到尷尬,耳朵發紅。
「嗯,我知道,慢慢留意就好。說到該記的事,妳不覺得程式碼統一用英文的話,輸入法就不用頻繁切換,更何況中文還要選字。用英文的話,習慣了之後既節省時間也不用折磨手指。妳總有一天要練好英文的,何不一開始就練?」
唯心給詩憶看看IDE對使用了非ASCII
字的中文字發出的警告。
「如果要用英文,記住類別名字要用英文字母大寫開頭,變數名字要用英文字母小寫開頭。」
詩憶看她邊說邊重複握緊拳頭打開拳頭,增添手部的血液循環的動作,不由得點頭。
唯心沒有繼續說話,詩憶就開始研究兩個檔案程式碼。「是故意不放在一個檔案的嗎?」
「是的,我習慣將類別從其他程式碼中獨立出來放在class
檔案,如果其他程式碼段落也要用到這個類別,可以節省尋找時間。因為一天只有二十四小時啊。」唯心一臉可惜的說。「不過找到延長的方法的話,好像也有點危險呢,對被支配者來說吶。」她輕輕地勾起嘴角,露出略帶玩味的笑容。
詩憶直覺繼續這個話題不太安全,所以決定還是回頭提起有關程式的問題就好。「學姐,class
前面都要加data
的嗎?」
唯心回答:「啊,不用,一般的類別只需要class
,data class
是資料類別,很多功能針對資料屬性特化,比如同樣印出,兩者結果就不一樣。」
println(飲料("鮮奶綠茶", 50))
「如果是data class
,會印出類別和屬性飲料(name=鮮奶綠茶, price=50))
;反之,如果是class
,預設只會印出類別和物件存放的記憶體位置飲料@2c7b84de
,當然要改預設也是可以的,只是一般都是有需要再改。」唯心繼續補充:「比對兩個類別物件的方式也不一樣,data class
注意的是屬性值有沒有相同,class
預設注意的是存放的位置是不是相同。所以class
可以沒有屬性,但是data class
一定要有屬性,所以data class
一開始就會在括號裡的第一建構式用val
和var
設定屬性。」
「一般class
不在第一建構式設定屬性的話,那些變數會變成什麼?」詩憶問。
唯心笑了笑:「這個嗎?通常會在後面的大括號裡對傳進來的變數做處理或計算再另外儲存結果,畢竟不是屬性的變數,只能在後面的大括號生存,想和之前一樣呼叫飲料.price
,程式只會和你說查無此人。」
class 飲料(name: String, price: Int) {
val newPrice = price + 10
}